efl_version: 1 22;

collections {

   styles {
      style {
         name: "entry_style";
         base: "font="sans" font_size=10 color=#000 wrap="word" left_margin=2 right_margin=2";
      }
   }

   group {
      name: "example/main";
      min: 400 400;

      parts {
         part {
            name: "bg";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
            }
         }

         part {
            name: "title";
            type: TEXT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1 {
                  relative: 0.0 0.0;
                  offset: 0 0;
                  to: "bg";
               }
               rel2 {
                  relative: 1.0 0.2;
                  offset: -1 -1;
                  to: "bg";
               }
               text {
                  text: "Multiseat Example";
                  size: 16;
                  font: "sans";
                  min: 1 1;
               }
            }
         }

         part {
            name: "drag_area1";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1 {
                  relative: 0.1 0.25;
                  offset: -5 0;
               }
               rel2 {
                  relative: 0.1 0.9;
                  offset: 4 0;
               }
            }
         }

         part {
            name: "example/knob1";
            type: RECT;
            mouse_events: 1;
            dragable {
               confine: "drag_area1";
               x: 0 0 0;
               y: 1 1 0;
            }
            description {
               state: "default" 0.0;
               min: 10 10;
               color: 200 200 200 255;
            }
            description {
               state: "focused,s1" 0.0;
               inherit: "default" 0.0;
               color: 200 0 0 255;
            }
            description {
               state: "focused,s2" 0.0;
               inherit: "default" 0.0;
               color: 0 200 0 255;
            }
         }

         part {
            name: "drag_area2";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1 {
                  relative: 0.2 0.25;
                  offset: -5 0;
               }
               rel2 {
                  relative: 0.2 0.9;
                  offset: 4 0;
               }
            }
         }

         part {
            name: "example/knob2";
            type: RECT;
            mouse_events: 1;
            dragable {
               confine: "drag_area2";
               x: 0 0 0;
               y: 1 1 0;
            }
            description {
               state: "default" 0.0;
               min: 10 10;
               color: 200 200 200 255;
            }
            description {
               state: "focused,s1" 0.0;
               inherit: "default" 0.0;
               color: 200 0 0 255;
            }
            description {
               state: "focused,s2" 0.0;
               inherit: "default" 0.0;
               color: 0 200 0 255;
            }
         }

         part {
            name: "bg_text1";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               min: 10 50;
               rel1.relative: 0.3 0.25;
               rel2.relative: 0.9 0.4;
               color: 200 200 200 255;
            }
            description {
               state: "focused,s1" 0.0;
               inherit: "default" 0.0;
               color: 200 0 0 255;
            }
            description {
               state: "focused,s2" 0.0;
               inherit: "default" 0.0;
               color: 0 200 0 255;
            }
         }

         part {
            name: "example/text1";
            type: TEXTBLOCK;
            scale: 1;
            entry_mode: EDITABLE;
            select_mode: DEFAULT;
            cursor_mode: UNDER;
            mouse_events: 1;
            multiline: 1;
            source: "example/selection";
            source4: "example/cursor";
            description {
               state: "default" 0.0;
               min: 12 50;
               rel1 {
                  to: "bg_text1";
                  offset: 2 2;
               }
               rel2 {
                  to: "bg_text1";
                  offset: -3 -3;
               }
               text {
                  style: "entry_style";
                  min: 0 1;
                  align: 0.0 0.0;
               }
            }
         }

         part {
            name: "bg_text2";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               min: 10 50;
               rel1.relative: 0.3 0.45;
               rel2.relative: 0.9 0.6;
               color: 200 200 200 255;
            }
            description {
               state: "focused,s1" 0.0;
               inherit: "default" 0.0;
               color: 200 0 0 255;
            }
            description {
               state: "focused,s2" 0.0;
               inherit: "default" 0.0;
               color: 0 200 0 255;
            }
         }

         part {
            name: "example/text2";
            type: TEXTBLOCK;
            scale: 1;
            entry_mode: EDITABLE;
            select_mode: DEFAULT;
            cursor_mode: UNDER;
            mouse_events: 1;
            multiline: 1;
            source: "example/selection";
            source4: "example/cursor";
            description {
               state: "default" 0.0;
               min: 12 50;
               rel1 {
                  to: "bg_text2";
                  offset: 2 2;
               }
               rel2 {
                  to: "bg_text2";
                  offset: -3 -3;
               }
               text {
                  style: "entry_style";
                  min: 0 1;
                  align: 0.0 0.0;
               }
            }
         }

         part {
            name: "button_bg";
            type: RECT;
            mouse_events: 1;
            description {
               state: "default" 0.0;
               rel1.relative: 0.45 0.65;
               rel2.relative: 0.9 0.9;
               color: 200 200 200 255;
            }
         }

         part {
            name: "button_area";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               rel1 {
                  to: "button_bg";
                  offset: 10 10;
               }
               rel2 {
                  to: "button_bg";
                  offset: -11 -11;
               }
               color: 0 0 0 0;
            }
         }

         part {
            name: "button_left_over";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               rel1 {
                  to: "button_area";
                  relative: 0.0 0.0;
               }
               rel2 {
                  to: "button_area";
                  relative: 0.5 0.5;
               }
               color: 255 0 0 100;
            }
            description {
               state: "on" 0.0;
               inherit: "default" 0.0;
               color: 255 0 0 255;
            }
         }

         part {
            name: "button_left_over_label";
            type: TEXT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1.to: "button_left_over";
               rel2.to: "button_left_over";
               text {
                  text: "Seat 1 over";
                  size: 10;
                  font: "sans";
                  min: 1 1;
               }
            }
         }

         part {
            name: "button_left_focus";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               rel1 {
                  to: "button_area";
                  relative: 0.0 0.5;
               }
               rel2 {
                  to: "button_area";
                  relative: 0.5 1.0;
               }
               color: 255 0 0 100;
            }
            description {
               state: "on" 0.0;
               inherit: "default" 0.0;
               color: 255 0 0 255;
            }
         }

         part {
            name: "button_left_focus_label";
            type: TEXT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1.to: "button_left_focus";
               rel2.to: "button_left_focus";
               text {
                  text: "Seat 1 focus";
                  size: 10;
                  font: "sans";
                  min: 1 1;
               }
            }
         }

         part {
            name: "button_right_over";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               rel1 {
                  to: "button_area";
                  relative: 0.5 0.0;
               }
               rel2 {
                  to: "button_area";
                  relative: 1.0 0.5;
               }
               color: 0 255 0 100;
            }
            description {
               state: "on" 0.0;
               inherit: "default" 0.0;
               color: 0 255 0 255;
            }
         }

         part {
            name: "button_right_over_label";
            type: TEXT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1.to: "button_right_over";
               rel2.to: "button_right_over";
               text {
                  text: "Seat 2 over";
                  size: 10;
                  font: "sans";
                  min: 1 1;
               }
            }
         }

         part {
            name: "button_right_focus";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               rel1 {
                  to: "button_area";
                  relative: 0.5 0.5;
               }
               rel2 {
                  to: "button_area";
                  relative: 1.0 1.0;
               }
               color: 0 255 0 100;
            }
            description {
               state: "on" 0.0;
               inherit: "default" 0.0;
               color: 0 255 0 255;
            }
         }

         part {
            name: "button_right_focus_label";
            type: TEXT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 0 0 0 255;
               rel1.to: "button_right_focus";
               rel2.to: "button_right_focus";
               text {
                  text: "Seat 2 focus";
                  size: 10;
                  font: "sans";
                  min: 1 1;
               }
            }
         }

         part {
            name: "unfocus_area";
            type: RECT;
            mouse_events: 1;
            repeat_events: 1;
            description {
               state: "default" 0.0;
               color: 255 255 255 0;
            }
         }

         part {
            name: "example/swallow";
            type: SWALLOW;
            mouse_events: 1;
            description {
               state: "default" 0.0;
               rel1.relative: 0.3 0.65;
               rel2.relative: 0.4 0.9;
            }
         }
      }

      programs {
         program {
            name: "focus";
            signal: "load";
            source: "";
            action: FOCUS_SET "seat1";
            target: "example/text1";
         }

         program {
            name: "focus,t1,s1";
            signal: "seat,seat1,mouse,clicked,1";
            source: "example/text1";
            action: FOCUS_SET "seat1";
            target: "example/text1";
         }

         program {
            name: "focus,color,t1,s1";
            signal: "seat,seat1,focus,part,in";
            source: "example/text1";
            action: STATE_SET "focused,s1" 0.0;
            target: "bg_text1";
         }

         program {
            name: "unfocus,color,t1,s1";
            signal: "seat,seat1,focus,part,out";
            source: "example/text1";
            action: STATE_SET "default" 0.0;
            target: "bg_text1";
         }

         program {
            name: "focus,t2,s1";
            signal: "seat,seat1,mouse,clicked,1";
            source: "example/text2";
            action: FOCUS_SET "seat1";
            target: "example/text2";
         }

         program {
            name: "focus,color,t2,s1";
            signal: "seat,seat1,focus,part,in";
            source: "example/text2";
            action: STATE_SET "focused,s1" 0.0;
            target: "bg_text2";
         }

         program {
            name: "unfocus,color,t2,s1";
            signal: "seat,seat1,focus,part,out";
            source: "example/text2";
            action: STATE_SET "default" 0.0;
            target: "bg_text2";
         }

         program {
            name: "focus,t1,s2";
            signal: "seat,seat2,mouse,clicked,1";
            source: "example/text1";
            action: FOCUS_SET "seat2";
            target: "example/text1";
         }

         program {
            name: "focus,color,t1,s2";
            signal: "seat,seat2,focus,part,in";
            source: "example/text1";
            action: STATE_SET "focused,s2" 0.0;
            target: "bg_text1";
         }

         program {
            name: "unfocus,color,t1,s2";
            signal: "seat,seat2,focus,part,out";
            source: "example/text1";
            action: STATE_SET "default" 0.0;
            target: "bg_text1";
         }

         program {
            name: "focus,t2,s2";
            signal: "seat,seat2,mouse,clicked,1";
            source: "example/text2";
            action: FOCUS_SET "seat2";
            target: "example/text2";
         }

         program {
            name: "focus,color,t2,s2";
            signal: "seat,seat2,focus,part,in";
            source: "example/text2";
            action: STATE_SET "focused,s2" 0.0;
            target: "bg_text2";
         }

         program {
            name: "unfocus,color,t2,s2";
            signal: "seat,seat2,focus,part,out";
            source: "example/text2";
            action: STATE_SET "default" 0.0;
            target: "bg_text2";
         }

         program {
            name: "button,left,in";
            signal: "seat,seat1,mouse,in";
            source: "button_bg";
            action: STATE_SET "on" 0.0;
            target: "button_left_over";
         }

         program {
            name: "button,left,out";
            signal: "seat,seat1,mouse,out";
            source: "button_bg";
            action: STATE_SET "default" 0.0;
            target: "button_left_over";
         }

         program {
            name: "button,left,focus";
            signal: "seat,seat1,mouse,clicked,1";
            source: "button_bg";
            action: FOCUS_SET "seat1";
            target: "button_bg";
         }

         program {
            name: "button,left,focused";
            signal: "seat,seat1,focus,part,in";
            source: "button_bg";
            action: STATE_SET "on" 0.0;
            target: "button_left_focus";
         }

         program {
            name: "button,left,unfocused";
            signal: "seat,seat1,focus,part,out";
            source: "button_bg";
            action: STATE_SET "default" 0.0;
            target: "button_left_focus";
         }

         program {
            name: "button,right,in";
            signal: "seat,seat2,mouse,in";
            source: "button_bg";
            action: STATE_SET "on" 0.0;
            target: "button_right_over";
         }

         program {
            name: "button,right,out";
            signal: "seat,seat2,mouse,out";
            source: "button_bg";
            action: STATE_SET "default" 0.0;
            target: "button_right_over";
         }

         program {
            name: "button,right,focus";
            signal: "seat,seat2,mouse,clicked,1";
            source: "button_bg";
            action: FOCUS_SET "seat2";
            target: "button_bg";
         }

         program {
            name: "button,right,focused";
            signal: "seat,seat2,focus,part,in";
            source: "button_bg";
            action: STATE_SET "on" 0.0;
            target: "button_right_focus";
         }

         program {
            name: "button,right,unfocused";
            signal: "seat,seat2,focus,part,out";
            source: "button_bg";
            action: STATE_SET "default" 0.0;
            target: "button_right_focus";
         }

         program {
            name: "knob1,s1";
            signal: "seat,seat1,drag,start";
            source: "example/knob1";
            action: STATE_SET "focused,s1" 0.0;
            target: "example/knob1";
         }

         program {
            name: "knob1,s2";
            signal: "seat,seat2,drag,start";
            source: "example/knob1";
            action: STATE_SET "focused,s2" 0.0;
            target: "example/knob1";
         }

         program {
            name: "knob1,seat1";
            signal: "seat,*,drag,stop";
            source: "example/knob1";
            action: STATE_SET "default" 0.0;
            target: "example/knob1";
         }

         program {
            name: "knob2,s1";
            signal: "seat,seat1,drag,start";
            source: "example/knob2";
            action: STATE_SET "focused,s1" 0.0;
            target: "example/knob2";
         }

         program {
            name: "knob2,s2";
            signal: "seat,seat2,drag,start";
            source: "example/knob2";
            action: STATE_SET "focused,s2" 0.0;
            target: "example/knob2";
         }

         program {
            name: "knob2,seat1";
            signal: "seat,*,drag,stop";
            source: "example/knob2";
            action: STATE_SET "default" 0.0;
            target: "example/knob2";
         }

         program {
            name: "rect,focus,s1";
            signal: "seat,seat1,mouse,clicked,1";
            source: "example/swallow";
            action: FOCUS_OBJECT "seat1";
            target: "example/swallow";
         }

         program {
            name: "rect,unfocus,s1";
            signal: "seat,seat1,mouse,clicked,1";
            source: "unfocus_area";
            action: FOCUS_OBJECT "seat1";
         }

         program {
            name: "rect,focus,s2";
            signal: "seat,seat2,mouse,clicked,1";
            source: "example/swallow";
            action: FOCUS_OBJECT "seat2";
            target: "example/swallow";
         }

         program {
            name: "rect,unfocus,s2";
            signal: "seat,seat2,mouse,clicked,1";
            source: "unfocus_area";
            action: FOCUS_OBJECT "seat2";
         }
      }
   }

   group {
      name: "example/selection";

      parts {
         part {
            name: "selection";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               color: 180 180 180 255;
            }
         }
      }
   }

   group {
      name: "example/cursor";
      min: 1 0;

      parts {
         part {
            name: "cursor";
            type: RECT;
            mouse_events: 0;
            description {
               state: "default" 0.0;
               min: 2 12;
               color: 0 0 0 255;
            }
            description {
               state: "hidden" 0.0;
               inherit: "default" 0.0;
               color: 0 0 0 0;
            }
         }
      }

      programs {
         program {
            name: "cursor_hide";
            signal: "load";
            source: "";
            action: STATE_SET "hidden" 0.0;
            target: "cursor";
            transition: SINUSOIDAL 0.2;
            after: "cursor_hide_timer";
         }
         program {
            name: "cursor_hide_timer";
            in: 0.2 0.0;
            after: "cursor_show";
         }
         program {
            name: "cursor_show";
            action: STATE_SET "default" 0.0;
            target: "cursor";
            after: "cursor_show_timer";
         }
         program {
            name: "cursor_show_timer";
            in: 0.5 0.0;
            after: "cursor_hide";
         }
      }
   }
}
